package projeto.administrativo.colaboradorexterno.cih;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.zkoss.zkplus.spring.SpringUtil;

import nucleo.comuns.visao.NucleoTab;
import plataforma.base.cdp.ExcecaoRegraNegocio;
import plataforma.crudestatico.cih.FormularioDadosCRUDEstatico;
import projeto.administrativo.colaboradorexterno.cdp.ColaboradorExterno;
import projeto.administrativo.colaboradorexterno.cdp.Informacao;
import projeto.administrativo.funcionario.cih.AbaDadosResponsavelAtividade;
import projeto.comercial.funcaoservico.cdp.FuncaoServico;
import projeto.comercial.funcaoservico.cgd.DaoFuncaoServico;
import projeto.ramoAtividade.cdp.RamoAtividade;
import projeto.ramoAtividade.cgd.DaoRamoAtividade;
import sun.swing.StringUIClientPropertyKey;

public class FormDadosColaboradorExterno extends
		FormularioDadosCRUDEstatico<ColaboradorExterno> {

	/**
	 * 
	 */
	private static final long serialVersionUID = 4359843579998950180L;

	AbaDadosResponsavelAtividade abaResponsavel;

	AbaContatos abaContatos;
	AbaRamoAtividade abaRamoAtividade;
	AbaFuncaoServico abaFuncaoServico;
	AbaInformacoes abaInformacoes;

	@Override
	protected List<NucleoTab> definirTabs() {

		List<NucleoTab> listaTabs = new ArrayList<NucleoTab>();
		abaResponsavel = new AbaDadosResponsavelAtividade();
		abaContatos = new AbaContatos();
		abaFuncaoServico = new AbaFuncaoServico();
		abaInformacoes = new AbaInformacoes();

		listaTabs.add(abaResponsavel);
		listaTabs.add(abaFuncaoServico);
		listaTabs.add(abaContatos);
		listaTabs.add(abaInformacoes);

		return listaTabs;
	}

	@Override
	protected void preencherDadosObjeto(ColaboradorExterno objeto) {
		objeto.setNome(abaResponsavel.getCampoNome().getValue());
		objeto.setEmail(abaResponsavel.getCampoemail().getValue());
		objeto.setTelefoneOutro(abaResponsavel.getCampotelefoneOutro()
				.getValue());
		objeto.setEndereco(abaResponsavel.getCampoendereco().getValue());

		objeto.setFuncaoServico(abaFuncaoServico.getSetFuncaoServico());
		objeto.setContatos(abaContatos.getContatos());
		objeto.setInformacoes(abaInformacoes.getInformacoes());

	}

	@Override
	protected void preencherDadosTela(ColaboradorExterno objeto)
			throws ExcecaoRegraNegocio {
		if (objeto.getNome() != null)
			abaResponsavel.getCampoNome().setValue(objeto.getNome());
		if (objeto.getEmail() != null)
			abaResponsavel.getCampoemail().setValue(objeto.getEmail());

		abaResponsavel.getCampotelefoneOutro().setValue(
				objeto.getTelefoneOutro());
		abaResponsavel.getCampoendereco().setValue(objeto.getEndereco());

		abaContatos.setContatos(objeto.getContatos());

		abaInformacoes.preencherComDados(objeto.getInformacoes());

		// dados funcao
		DaoFuncaoServico daoFuncao = SpringUtil.getApplicationContext()
				.getBean(DaoFuncaoServico.class);
		List<FuncaoServico> todasFuncoes = daoFuncao
				.recuperarTodosAtivoComOrdenacao("descricao");

		abaFuncaoServico.setFuncaoServico(objeto.getFuncaoServico(),
				todasFuncoes);

	}

	public void configurarExtensao() {
		if (getModoExibicao() == ModoExibicao.NOVO) {

			// ramos de atividade
			DaoRamoAtividade daoRamo = SpringUtil.getApplicationContext()
					.getBean(DaoRamoAtividade.class);
			List<RamoAtividade> todosRamosAtividade = daoRamo
					.recuperarTodosAtivoComOrdenacao("descricao");

			// funcoes de servico

			DaoFuncaoServico daoFuncao = SpringUtil.getApplicationContext()
					.getBean(DaoFuncaoServico.class);
			List<FuncaoServico> todasFuncoes = daoFuncao
					.recuperarTodosAtivoComOrdenacao("descricao");

			abaFuncaoServico.setFuncaoServico(getObjetoCadastroDados()
					.getFuncaoServico(), todasFuncoes);

		}

	}

	@Override
	public boolean isValid() {
		if (abaResponsavel.isValid())
			return true;

		return false;
	}
}
